/*
    作者：zx
    时间：2022.11.24
    描述：信号量定义
*/
#ifndef SEMAPHPORE_H
#define SEMAPHPORE_H



#include "tools/list.h"

typedef struct 
{
    // 资源剩余个数
    int value;
    // 等待该资源的任务队列
    list_t wait_list;
}semaphore_t;

// 信号量初始化
void sema_init(semaphore_t * semaphore, int init_count);
// 等信号、请求资源、相当于P操作
void sema_wait(semaphore_t * semaphore);
// 发信号、释放资源、相当于V操作
void sema_notify(semaphore_t * semaphore);
// 信号量资源数 
int sema_value(semaphore_t * semaphore);

#endif // !SEMAPHPORE_H